package com.unju.ventanas.usuario;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Iterator;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;

import com.unju.modelo.Perfil;
import com.unju.principal.Main;
import com.unju.utils.ConstantesGlobales;
import com.unju.ventanas.principal.JFrmPrincipal;

public class JDialogEditarUsuario extends JDialog {
	
	private static final long serialVersionUID = 1L;
	private JTextField txtApellido;
	private JTextField txtNombre;
	private JTextField txtDni;
	private JTextField txtCalle;
	private JTextField txtBarrio;
	private JTextField txtNro;
	private JTextField txtLocalidad;
	private JTextField txtProvincia;
	private JTextField textField;
	private JTextField textField_1;
	private JTextField txtLegajo;
	private JTextField txtEMail;
	private JComboBox<String> cmbTiposUsuarios;
	private JTextField txtNombreDeUsuario;
	private JTextField txtSuContrasea;
	private JTextField txtRepContrasenia;	

	/**
	 * Create the dialog.
	 */
	public JDialogEditarUsuario(JFrmPrincipal principal) {
		crearVentana();
		initButton();
		panelDatoPer();
		panelUserPass();
		setAutomatico(false);
		this.setModal(true);
		setVisible(true);				
	}
	
	public void crearVentana(){
		setIconImage(Toolkit.getDefaultToolkit().getImage(JDialogNuevoUsuario.class.getResource("/com/unju/img/User.png")));
		setPreferredSize(new Dimension(840,335)); 		
		setMinimumSize(new Dimension(840,335));
		setMaximumSize(new Dimension(840,335));	
		setBounds(0, 0, 840, 360);
		setLocationRelativeTo(null);
		getContentPane().setLayout(null);
	}
	
	public void panelDatoPer(){
		JPanel pDatosPersonales = new JPanel();
		pDatosPersonales.setBorder(new TitledBorder(null, "Datos Personales", TitledBorder.LEFT, TitledBorder.TOP, null, null));
		pDatosPersonales.setBounds(10, 10, 804, 135);		
		pDatosPersonales.setLayout(null);
		getContentPane().add(pDatosPersonales);
		
		JLabel lblApellido = new JLabel("Apellido:");
		lblApellido.setBounds(31, 33, 70, 14);
		pDatosPersonales.add(lblApellido);
		
		JLabel lblNombre = new JLabel("Nombre:");
		lblNombre.setBounds(31, 55, 70, 14);
		pDatosPersonales.add(lblNombre);
		
		JLabel lblDni = new JLabel("DNI:");
		lblDni.setBounds(31, 79, 70, 14);
		pDatosPersonales.add(lblDni);
		
		JLabel lblUsuario = new JLabel("Calle:");
		lblUsuario.setBounds(231, 30, 39, 14);
		pDatosPersonales.add(lblUsuario);
		
		JLabel lblN = new JLabel("N\u00B0:");
		lblN.setBounds(579, 33, 66, 14);
		pDatosPersonales.add(lblN);
		
		JLabel lblBarrio = new JLabel("Barrio:");
		lblBarrio.setBounds(231, 54, 46, 14);
		pDatosPersonales.add(lblBarrio);
		
		txtApellido = new JTextField();
		txtApellido.setBounds(98, 24, 123, 20);
		pDatosPersonales.add(txtApellido);
		txtApellido.setColumns(10);
		
		txtNombre = new JTextField();
		txtNombre.setColumns(10);
		txtNombre.setBounds(98, 48, 123, 20);
		pDatosPersonales.add(txtNombre);
		
		txtDni = new JTextField();
		txtDni.setColumns(10);
		txtDni.setBounds(98, 73, 123, 20);
		pDatosPersonales.add(txtDni);
		
		txtCalle = new JTextField();
		txtCalle.setColumns(10);
		txtCalle.setBounds(290, 27, 279, 20);
		pDatosPersonales.add(txtCalle);
		
		txtBarrio = new JTextField();
		txtBarrio.setColumns(10);
		txtBarrio.setBounds(290, 51, 279, 20);
		pDatosPersonales.add(txtBarrio);
		
		txtNro = new JTextField();
		txtNro.setBounds(655, 24, 127, 20);
		pDatosPersonales.add(txtNro);
		txtNro.setColumns(10);
		
		JLabel lblLocalidad = new JLabel("Localidad:");
		lblLocalidad.setBounds(231, 79, 59, 14);
		pDatosPersonales.add(lblLocalidad);
		
		txtLocalidad = new JTextField();
		txtLocalidad.setColumns(10);
		txtLocalidad.setBounds(290, 76, 277, 20);
		pDatosPersonales.add(txtLocalidad);
		
		JLabel lblProvincia = new JLabel("Provincia:");
		lblProvincia.setBounds(231, 104, 59, 14);
		pDatosPersonales.add(lblProvincia);
		
		txtProvincia = new JTextField();
		txtProvincia.setColumns(10);
		txtProvincia.setBounds(290, 101, 277, 20);
		pDatosPersonales.add(txtProvincia);		
		
		JLabel lblTel = new JLabel("Telefono:");
		lblTel.setBounds(579, 57, 66, 14);
		pDatosPersonales.add(lblTel);
		
		JLabel lblCelular = new JLabel("Celular:");
		lblCelular.setBounds(579, 82, 66, 14);
		pDatosPersonales.add(lblCelular);
		
		textField = new JTextField();
		textField.setBounds(655, 48, 127, 20);
		pDatosPersonales.add(textField);
		textField.setColumns(10);
		
		textField_1 = new JTextField();
		textField_1.setBounds(655, 73, 127, 20);
		pDatosPersonales.add(textField_1);
		textField_1.setColumns(10);
		
		JLabel lblLegajo = new JLabel("Legajo:");
		lblLegajo.setBounds(31, 104, 70, 14);
		pDatosPersonales.add(lblLegajo);
		
		txtLegajo = new JTextField();
		txtLegajo.setBounds(98, 101, 123, 20);
		pDatosPersonales.add(txtLegajo);
		txtLegajo.setColumns(10);
		
		JLabel lblEmail = new JLabel("e-mail:");
		lblEmail.setBounds(579, 104, 66, 14);
		pDatosPersonales.add(lblEmail);
		
		txtEMail = new JTextField();
		txtEMail.setBounds(655, 101, 127, 20);
		pDatosPersonales.add(txtEMail);
		txtEMail.setColumns(10);
	}

	
	public void panelUserPass(){
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Usuario y Contrase\u00F1a", TitledBorder.LEFT, TitledBorder.TOP, null, null));
		panel.setBounds(10, 150, 804, 113);
		getContentPane().add(panel);
		
		JLabel lblContrasea = new JLabel("Contrase\u00F1a");
		lblContrasea.setBounds(272, 47, 97, 14);
		panel.add(lblContrasea);
		
		JLabel label_6 = new JLabel("Usuario:");
		label_6.setBounds(26, 47, 66, 14);
		panel.add(label_6);
		
		JLabel lblRepContrasenia = new JLabel("Tipo de Usuario:");
		lblRepContrasenia.setBounds(546, 47, 102, 14);
		panel.add(lblRepContrasenia);
		
		final JCheckBox chkEsEncargado = new JCheckBox("Usuario del Sistema");
		chkEsEncargado.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (chkEsEncargado.isSelected()){
					setAutomatico(true);
				}else{
					setAutomatico(false);
				}
			}
		});
		chkEsEncargado.setBounds(17, 17, 165, 23);
		panel.add(chkEsEncargado);
		
		cmbTiposUsuarios = new JComboBox<String>();
		cargarTipos();
		cmbTiposUsuarios.setBounds(658, 44, 136, 20);
		panel.add(cmbTiposUsuarios);
		
		final JCheckBox chckbxEditar = new JCheckBox("Editar");
		chckbxEditar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (chckbxEditar.isSelected() && chkEsEncargado.isSelected()){
					editarCampos(true);
				}else{
					editarCampos(false);
				}
			}
		});
		chckbxEditar.setBounds(196, 17, 97, 23);
		panel.add(chckbxEditar);
		
		txtNombreDeUsuario = new JTextField();
		txtNombreDeUsuario.setText("Nombre de Usuario");
		txtNombreDeUsuario.setBounds(96, 44, 159, 20);
		panel.add(txtNombreDeUsuario);
		txtNombreDeUsuario.setColumns(10);
		
		txtSuContrasea = new JTextField();
		txtSuContrasea.setText("Su Contrase\u00F1a");
		txtSuContrasea.setBounds(379, 44, 137, 20);
		panel.add(txtSuContrasea);
		txtSuContrasea.setColumns(10);
		
		JLabel lblRepetirContrasea = new JLabel("Repetir Contrase\u00F1a:");
		lblRepetirContrasea.setBounds(272, 78, 108, 14);
		panel.add(lblRepetirContrasea);
		
		txtRepContrasenia = new JTextField();
		txtRepContrasenia.setText("Su Contrase\u00F1a");
		txtRepContrasenia.setColumns(10);
		txtRepContrasenia.setBounds(379, 75, 137, 20);
		panel.add(txtRepContrasenia);
	}

	public void initButton(){
		JButton btnAceptar = new JButton(ConstantesGlobales.BTN_ACEPTAR);
		btnAceptar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				/**
				 * Pasos
				 * 	1 - crear una instancia de la clase usuario
				 * 	2 - crear una instancia de la clase encargado
				 *  3 - 
				 */
				
//				usuario = new Usuario();
				
			}
		});
		btnAceptar.setBounds(590, 274, 89, 23);
		getContentPane().add(btnAceptar);		
		
		JButton btnCancelar = new JButton(ConstantesGlobales.BTN_CANCELAR);
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
		btnCancelar.setBounds(689, 274, 89, 23);
		getContentPane().add(btnCancelar);
	}
	
	private void setAutomatico(boolean estado){
		if (estado == true){
			txtNombreDeUsuario.setText(txtLegajo.getText());
			txtSuContrasea.setText(txtDni.getText());
			txtRepContrasenia.setText(txtDni.getText());
			cmbTiposUsuarios.setEnabled(estado);
		}else{
			//borra los datos y deshabilita los campos
			txtNombreDeUsuario.setText("");
			txtNombreDeUsuario.setEnabled(estado);
			txtSuContrasea.setText("");
			txtSuContrasea.setEnabled(estado);
			txtRepContrasenia.setText("");
			txtRepContrasenia.setEnabled(estado);
			cmbTiposUsuarios.setEnabled(estado);
		}	
	}
	private void editarCampos(boolean estado){
		txtNombreDeUsuario.setEditable(estado);
		txtNombreDeUsuario.setEnabled(estado);
		txtSuContrasea.setEditable(estado);
		txtSuContrasea.setEnabled(estado);
		txtRepContrasenia.setEditable(estado);
		txtRepContrasenia.setEnabled(estado);
	}
	/**
	 * No deberia devolver dos Tipos de Usuarios con el mismo nombre
	 */
	private void cargarTipos(){
		Iterator iterador = Main.bdPerfil.listIterator(); //Le solicito a la lista que me devuelva un iterador con todos los el elementos contenidos en ella
		 
		//Mientras que el iterador tenga un proximo elemento
		while( iterador.hasNext() ) {
		       Perfil perfil = (Perfil) iterador.next();
		       cmbTiposUsuarios.addItem(perfil.getNombre());
		}
	}

}
